Enterprise software systems are typically sophisticated, large-scale systems that support many, e.g., hundreds or thousands, of concurrent users. Examples of enterprise software systems include financial planning systems, budget planning systems, order management systems, inventory management systems, sales force management systems, business intelligence tools, enterprise reporting tools, project and resource management systems and other enterprise software systems.
Many enterprise performance management and business planning applications require a large population of users to enter data that the software then accumulates into higher level areas of responsibility in the organization. The system may perform mathematical calculations on the data, combining data submitted by one user with data submitted by another. Using the results of these calculations, the system may generate reports for review by higher management.
A computing device for a user typically connects to the enterprise software system via a computing network. The user computing device may provide an operating environment for concurrent execution of multiple planning applications that access multidimensional data stored to a cache on the computing device. Typically, the user computing device includes a cache to store datasets requested by the user. In many cases the cache stores complex, multi-dimensional datasets, i.e., data cubes, which may be downloaded from the enterprise software system via the network connection.
Frequently, the planning applications perform operations that access and manipulate the multidimensional datasets. To perform these operations, software executing on the computing device may create and maintain additional multi-dimensional datasets within the cache to temporarily hold the subset of the data being manipulated. The software also creates software reference objects (also referred to as “data provider” objects) that enable access to the multi-dimensional data. Commonly, other software objects frequently interact with the reference objects via numerous function calls to traverse the multidimensional data and to retrieve the underlying multidimensional data.